#include "Materiais.h"

#include <GL\glui.h>

using namespace std;
/*
 * Construtor
 */
Materiais::Materiais(string inherit) : inherit(inherit) {

	this->herda = false;

	this->setBrilho(1.0);
	if(inherit.compare("inherit")==0) {
		this->herda = true;
	} else {
		this->herda = false;

		this->setAmbiente(0.5,0.5,0.5,1.0);
		this->setDifusa(0.5,0.5,0.5,1.0);
		this->setEspecular(0.5,0.5,0.5,1.0);
		this->setEmissao(0.0,0.0,0.0,0.0);
	}
}
/*
 * Set's
 */
void Materiais::setAmbiente(float r, float g, float b, float a) {
	this->ambiente[0] = r;
	this->ambiente[1] = g;
	this->ambiente[2] = b;
	this->ambiente[3] = a;
}
void Materiais::setDifusa(float r, float g, float b, float a) {
	this->difusa[0] = r;
	this->difusa[1] = g;
	this->difusa[2] = b;
	this->difusa[3] = a;
}
void Materiais::setEspecular(float r, float g, float b, float a) {
	this->especular[0] = r;
	this->especular[1] = g;
	this->especular[2] = b;
	this->especular[3] = a;
}
void Materiais::setEmissao(float r, float g, float b, float a) {
	this->emissao[0] = r;
	this->emissao[1] = g;
	this->emissao[2] = b;
	this->emissao[3] = a;
}
void Materiais::setBrilho(float brilho) {
	this->brilho[0] = brilho;
}
void Materiais::aplica() {

	cout << "ESCREVE qq coisa!" << endl;
	cout << "HERDA:  " << this->herda << endl;
	if(!this->herda) {
		cout << "ATUMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMMM" << endl;
		glMaterialfv(GL_FRONT, GL_SHININESS,/* this->brilho);*/ &brilho[0]);
		glMaterialfv(GL_FRONT, GL_SPECULAR, /*this->difusa); */ &difusa[0]);
		glMaterialfv(GL_FRONT, GL_DIFFUSE, /*this->especular); */ &especular[0]);
		glMaterialfv(GL_FRONT, GL_AMBIENT, /*this->ambiente); */ &ambiente[0]);
		glMaterialfv(GL_FRONT, GL_EMISSION, /*this->emissao); */ &emissao[0]);

	}
}
/*
 * Get's
 */
float * Materiais::getAmbiente() {
	return this->ambiente;
}
float * Materiais::getDifusa() {
	return this->difusa;
}
float * Materiais::getEspecular() {
	return this->especular;
}
float * Materiais::getEmissao() {
	return this->emissao;
}
float * Materiais::getBrilho() {
	return this->brilho;
}
